/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.view;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import mx.its.dsw2.biblioteca.bl.AutorBlLocal;
import mx.its.dsw2.biblioteca.bl.CategoriaBlLocal;
import mx.its.dsw2.biblioteca.bl.LibroBlLocal;
import mx.its.dsw2.biblioteca.modelo.Categoria;
import mx.its.dsw2.biblioteca.modelo.Libro;

/**
 *
 * @author Maq-8
 */
@ManagedBean
@SessionScoped
public class BookBean {

    @EJB
    private CategoriaBlLocal categoriaBl;
    @EJB
    private AutorBlLocal autorBl;
    @EJB
    private LibroBlLocal libroBl;
    private List<Libro> lista;
    private List<Categoria> listaCategoria;
    private Libro book;
    private int authorSeleccionado;
    private int categorySeleccionado;
    private String accion = "";

    public BookBean() {
        book = new Libro();
    }

    public List<Libro> getLista() {
        lista = libroBl.getAll();
        return lista;
    }

    public Libro getBook() {
        return book;
    }

    public void setBook(Libro book) {
        this.book = book;
    }

    public int getAuthorSeleccionado() {
        return authorSeleccionado;
    }

    public void setAuthorSeleccionado(int authorSeleccionado) {
        this.authorSeleccionado = authorSeleccionado;
    }

    public int getCategorySeleccionado() {
        return categorySeleccionado;
    }

    public void setCategorySeleccionado(int categorySeleccionado) {
        this.categorySeleccionado = categorySeleccionado;
    }

    public List<Categoria> getListaCategoria() {
        return listaCategoria;
    }

    //Accion
    public String procesarSeleccion() {
        //listaCategoria = new ArrayList<Categoria>();
        book.setIdAutor(autorBl.findById(authorSeleccionado));
        return "BookConfirm";
    }

    public String procesarAccion() {
        System.out.println("sout " + accion + "listita " + listaCategoria);
        if (accion.equalsIgnoreCase("Nuevo")) {

            libroBl.register(book, listaCategoria);
        } else {
            if (accion.equalsIgnoreCase("Editar")) {
                libroBl.modify(book, listaCategoria);
            } else {
                if (accion.equalsIgnoreCase("Eliminar")) {
                    libroBl.delete(book);
                }
            }
        }
        accion = "";
        return "BookList";
    }

    public String procesarLlamada() {
        String page = "";
        if (accion.equalsIgnoreCase("Editar") || accion.equalsIgnoreCase("Nuevo")) {
            page = "BookCreateEdit";
        } else {
            if (accion.equalsIgnoreCase("Eliminar")) {
                page = "BookList";
            }
        }
        return page;
    }

    public void prepararNew(ActionEvent evt){
        accion = "Nuevo";
        listaCategoria = new ArrayList<Categoria>();
        book = new Libro();
    }

    public void prepararEditar(ActionEvent evt) {
//        int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
//        book = lista.get(index);
        listaCategoria = categoriaBl.getListByBook(book);
        accion = "Editar";
    }

    public void prepararEliminar(ActionEvent evt) {
        int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
        book = lista.get(index);
        accion = "Eliminar";
    }

    public void prepararEliminarDeTemporalLista(ActionEvent evt) {
        int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[3]);
        listaCategoria.remove(index);
    }

    public void agregarCategoria(ActionEvent evt) {
        listaCategoria.add(categoriaBl.findById(categorySeleccionado));
    }
}
